
package cz.results.winter6.view.browse.table;

import cz.results.winter6.model.StartSubjekt;
import cz.results.winter6.model.StartSubjektList;
import cz.results.winter6.model.VlCas;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class BrowseTableModel extends AbstractTableModel{
    
    private StartSubjektList sl;
    private ConfigBrowseTableModel configBrowseTableModel;
    
    public BrowseTableModel(StartSubjektList sl, ConfigBrowseTableModel configBrowseTableModel) {
        setSl(sl);
        setConfigBrowseTableModel(configBrowseTableModel);
    }
    
    public int getRowCount(){
        return getSl().size();
    }
    
    public int getColumnCount(){
        return getConfigBrowseTableModel().getPocetSloupcu();
    }
    
    public Object getValueAt(int row, int col){
        try {
            
            if(configBrowseTableModel.get(col).getClass()==ConfigColumnNacionale.class) {                      //sloupec typu nacionale
                return getSl().get(row).getNacionale().getHodnotaTagu(((ConfigColumnNacionale)configBrowseTableModel.get(col)).getPatternStr());
            } else {
                if(configBrowseTableModel.get(col).getClass()==ConfigColumnPriznak.class) {               //sloupec typu priznak
                    return getSl().get(row).getPriznaky().getHodnotaPriznaku(((ConfigColumnPriznak)configBrowseTableModel.get(col)).getNazev());
                } else {
                    switch(((ConfigColumnJizda)configBrowseTableModel.get(col)).getIdPolozky()){            // sloupec typu jizda
                        case ConfigColumnJizda.STC:
                            return getSl().get(row).getJizdy().get(((ConfigColumnJizda)configBrowseTableModel.get(col)).getCisloJizdy()).getStc();
                        case ConfigColumnJizda.STC_Z_CASOMIRY:
                            return getSl().get(row).getJizdy().get(((ConfigColumnJizda)configBrowseTableModel.get(col)).getCisloJizdy()).getStcZCasomiry();
                        case ConfigColumnJizda.ST_CAS:
                            return VlCas.casToStringNoMillis(getSl().get(row).getJizdy().get(((ConfigColumnJizda)configBrowseTableModel.get(col)).getCisloJizdy()).getCasStartu());
                        case ConfigColumnJizda.ST_PORADI:
                            return getSl().get(row).getJizdy().get(((ConfigColumnJizda)configBrowseTableModel.get(col)).getCisloJizdy()).getPoradiStartu();    
                        case ConfigColumnJizda.ST_POCET_INTEVALU:
                            return getSl().get(row).getJizdy().get(((ConfigColumnJizda)configBrowseTableModel.get(col)).getCisloJizdy()).getPocetStartovnichIntervalu();        
                    }
                }
            }
            
        } catch (Exception e) {
            System.err.println(e.toString());
            e.printStackTrace();
        }
        
        return null;
    }
    
    /** vrati startovni subjekt odpovidajici radku row tabulky */
    public StartSubjekt getStartSubjektAt(int row){
        return getSl().get(row);
    }
    
    public String getColumnName(int col){
        return configBrowseTableModel.get(col).getNazev();
    }
    
    
    public StartSubjektList getSl() {
        return sl;
    }
    
    public void setSl(StartSubjektList sl) {
        this.sl = sl;
    }
    
    public ConfigBrowseTableModel getConfigBrowseTableModel() {
        return configBrowseTableModel;
    }
    
    public void setConfigBrowseTableModel(ConfigBrowseTableModel config) {
        this.configBrowseTableModel = config;
        fireTableStructureChanged();
    }
    
    
}




